A type alias is exactly that - a name for any type.
You can use a type alias to give a name to any type at all, not just an object type. For example, a type alias can name a union type
Notes: 
- When implementing an abstract class, the derived class must call super() in its constructor.
 - Abstract classes can also include abstract properties.
 - Remember, abstract classes provide a powerful way to structure and share functionality while ensuring adherence to a specific contract.